
import { getLoginApi } from '@/api/user'
import router from '@/router'
import { delToken, getToken, setToken } from '@/utils/storage'
import { Message } from 'element-ui'

export default ({
  namespaced: true,
  state () {
    return {
      // 获取已有的token值，如果有就表明已登录过
      // 这里保证了，刷新后也会有token值，在刷新后会执行state，拿到getToken()获取token
      token: getToken() || ''
    }
  },
  getters: {
  },
  mutations: {
    // 表明将state.token值存起来
    setUserToken (state, token) {
      // 把token存到vuex
      state.token = token
      // 把token存本地
      setToken(token)
    },
    // 退出删除token
    layOut (state) {
      state.token = ''
      delToken()
    }
  },
  actions: {
    // 异步操作
    async loginAction (context, { username, password }) {
      try {
        // 发送登录请求
        // post请求，也是后接属性，但是可以接字符串、数组、对象、各种复杂数据类型 所以用data
        const res = await getLoginApi({ username, password })
        // 当请求登录成功后，将使用mutations下的同步存储token的方法，将登录后获取的token值存起来
        context.commit('setUserToken', res.data.token)
        Message.success('登录成功')
        router.replace('/')
      } catch (error) {
      }
    }
  },
  modules: {
  }
})
